perm filename EGRAPH.SAI[PIC,HE] blob sn#430336 filedate 1979-04-04 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	ENTRY NPLOT
C00003 00003	INTERNAL PROCEDURE NPLOT(INTEGER BUF,ACCUM,MASKBUF)
C00007 00004	END "EGRAPH"
C00008 ENDMK
C⊗;
ENTRY NPLOT;
BEGIN "EGRAPH"
REQUIRE "36A" COMPILER!SWITCHES;
REQUIRE "BUFDEC.SAI" SOURCE!FILE;
REQUIRE "GRAPH.DCL" SOURCE!FILE;
EXTERNAL INTEGER TEKWHERE;
INTEGER PTR,BUF,I,J,IMAX,VAL,MINV,MAXV,CMINV,CMAXV,AMAX;
INTEGER TOT;
integer yz,graph,xz,xinc,yinc,x,temp,y,oldx,oldy,xi,curx,cury;
real xscal,yscal;
	INTEGER GXSIZ,GYSIZ,GXSCAL,GYSCAL,GXADD,GYADD,GXTOT,GYTOT;

INTERNAL PROCEDURE NPLOT(INTEGER BUF,ACCUM,MASKBUF);
	BEGIN "NPLOT"
	INTEGER ARRAY PICNOR[0:2↑bytsz(buf)];
	INTEGER I,J,RWS,COLS,BYT;
	INTEGER TMAXV;
	AMAX←0;
	RWS←ROWS(BUF);  COLS←COLMS(BUF);   BYT←2↑BYTSZ(BUF)-1;
	MINV←BYT; MAXV←0;
	limit(buf,picnor,MINV,MAXV,TOT←0,IF MASKBUF=-1 THEN 0 ELSE -1,IF MASKBUF=-1 THEN 0 ELSE MASKBUF);
	IF ACCUM<0 THEN FOR I←MINV STEP 1 UNTIL MAXV DO PICNOR[I]←AMAX←PICNOR[I]+AMAX
	    ELSE FOR I←MINV STEP 1 UNTIL MAXV DO AMAX←AMAX MAX PICNOR[I];
	IF ABS(ACCUM)>0  THEN BEGIN	! PRINT RESULTS ONLY;
		SPRMPT("FILE ONLY (F) TERMINAL ONLY (T) OR BOTH (B)",SDUM←"F");
		SZILCH←GETPRINT;
		SETPRINT("",SDUM);
		FOR I←MINV THRU MAXV DO PRINT(I,": ",PICNOR[I],CRLF);
		SETPRINT("",SZILCH);
		END;
	IF ABS(ACCUM)=1 THEN RETURN;
SZILCH←"MINV: "&CVS(MINV)&" MAXV: "&CVS(TMAXV←MAXV);
PCTR(TEKWHERE);
INITT(450);
GXSIZ←2212; GYSIZ←2212;
GXSCAL←1862; GYSCAL←1862;
GXADD←231; GYADD←231;
GXTOT←GXSCAL+GXADD;
GYTOT←GYSCAL+GYADD;
YZ←0;
VWINDO(-511.0,2212.0,-511.0,2212.0);
    YZ←-511;
      XZ←-511;
      XINC←FNDINC(MAXV,MINV);
	MAXV←MAXV MIN 4096;
      YINC←FNDINC(AMAX,ZILCH←0);
      XSCAL←GXSCAL/(MAXV-MINV);
      YSCAL←GYSCAL/AMAX;
      SETPNT(XZ+GXADD,YZ+GYADD);
      VISVEC(GXSCAL,0);
      FOR X←MINV STEP XINC UNTIL MAXV DO
         BEGIN
         TEMP←XZ+GXADD+(X-MINV)*XSCAL;
         SETPNT(TEMP,YZ+GYADD);
         VISVEC(0,28);
         SETPNT(ZILCH←TEMP-70,DUM←YZ+GYADD-105);
         ARDSTR(CVS(X));
         END;
      SETPNT(XZ+GXADD,YZ+GYADD);
      VISVEC(0,GYSCAL);
      FOR Y←0 STEP YINC UNTIL AMAX DO
         BEGIN
         TEMP←GYADD+Y*YSCAL;
         SETPNT(XZ+GXADD-28,YZ+TEMP);
         VISVEC(28,0);
         SETPNT(ZILCH←XZ,DUM←TEMP+YZ-35);
         ARDSTR(CVS(Y));
         END;
      SETPNT(ZILCH←XZ+(GXSCAL%4),DUM←GYSIZ+YZ);
      ARDSTR(SZILCH);
      OLDX←XZ+GXADD;   OLDY←(GYADD+PICNOR[MINV]*YSCAL)+YZ;
      XI←(MAXV-MINV)%GYTOT+1;
	setpnt(oldx,oldy);
      FOR X←MINV+1 STEP XI UNTIL TMAXV DO
         BEGIN
         CURX←XZ+GXADD+(X-MINV)*XSCAL;
         CURY←(GYADD+PICNOR[X]*YSCAL)+YZ;
         VISVEC(CURX-OLDX,CURY-OLDY);
         OLDX←CURX;  OLDY←CURY;
         END;
ENDPCT;
END "NPLOT";
END "EGRAPH"